// 1. 安装express-session
// 2. 导入express-session模块
const session = require('express-session');
// 3. 导入express模块
const express = require('express');

// 导入验证登录中间件
const verifyFn = require('./middlewares/loginVerify');

// 4. 创建express对象
const app = express();
// 5. 调用并配置session中间件
app.use(session({
    // 5.1 参数："name" = 设置cookie的name，默认值是：connect.sid
    // 5.2 参数："secret" = 参与加密的字符串（又称签名）
    // 5.3 参数："saveUninitialized" = 是否为每次请求都设置一个cookie用来存储
    // 5.3 参数："resave" = 强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false
    // 5.4 参数："cookie" = 存储到cookie的相关配置
        // 5.4.1 参数："httpOnly" 开启后,前端无法通过 JS 操作
        // 5.4.2 参数："maxAge"  控制 sessionID 的过期时间
    name:"sID",
    secret:"jintiannichilema",
    saveUninitialized:false,
    resave:false,
    cookie:{
        httpOnly:true,
        maxAge:1000*60
    }
}))


// 获取请求体数据的中间件
app.use(express.urlencoded({extended:false}));
   
// login路由
app.get('/login',(req,res)=>{
    // res.send('登录页');
    res.sendFile(__dirname+'/05-login.html');
})

// 接收post请求的登录数据
app.post('/login',(req,res)=>{
    // 获取响应体
    console.log(req.body) //{ username: 'laowang', pwd: '123' }

    let {username,pwd} = req.body;
    // 登录验证
    if(username==="laowang" && pwd === "123"){
        // 登录成功！
        // 写入session
        req.session.name = username;
        req.session.email = "123@163.com"
        res.send('登录成功');
    }else{
        res.redirect('/login');
    }
})

// 个人中心路由
app.get('/center',verifyFn,(req,res)=>{
    res.send('个人中心页');
});

// 购物车页面
app.get('/cart',verifyFn,(req,res)=>{
    res.send('购物车');
});

    
// 9 配置get路由 - 登录页面
// 10 监听端口服务
app.listen(80,()=>{
    console.log("启动成功");
})



// 1. 将登录验证中间件函数 verifyFn 剪切到新建middleware文件夹的新建loginVerify.js中
// 2. 导入loginverify.js文件模块

// 3. 在需要验证的get路由内使用verifyFn中间件
    // 2.1 个人中心页
    // 2.2 退出登录